home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2004 April / Gamestar_61_2004-04_dvdb.iso / DVDStar / Editace / hltp.exe / {app} / Applications / QuArK / quarkpy / qmovepal.py < prev    next >
Text File  |  2004-01-05  |  12KB  |  234 lines

  1. """   QuArK  -  Quake Army Knife
  2.  
  3. The Movement Toolbar Palette.
  4. """
  5. #
  6. # Copyright (C) 1996-99 Armin Rigo
  7. # THIS FILE IS PROTECTED BY THE GNU GENERAL PUBLIC LICENCE
  8. # FOUND IN FILE "COPYING.TXT"
  9. #
  10. #$Header: /cvsroot/quark/runtime/quarkpy/qmovepal.py,v 1.8 2003/03/15 20:41:07 cdunde Exp $
  11.  
  12.  
  13. import qtoolbar
  14. import qmacro
  15. from qeditor import *
  16. from qdictionnary import Strings
  17.  
  18.  
  19.  
  20. def readmpvalues(spec, mode):
  21.     quarkx.globalaccept()
  22.     try:
  23.         setup = qmacro.dialogboxes[ConfigDialog.__name__].info.src
  24.     except:
  25.         setup = quarkx.setupsubset(mode, "Building")
  26.     return setup[spec]
  27.  
  28.  
  29. def btnclick(btn, mode=SS_MAP):
  30.     editor = mapeditor(mode)
  31.     if editor is None: return
  32.     offset = matrix = inflate = val = None
  33.     try:
  34.         val = readmpvalues(btn.spec, mode)
  35.     except:
  36.         pass
  37.     try:
  38.         offset = btn.offset
  39.         offset = apply(offset, val)
  40.     except:
  41.         pass
  42.     try:
  43.         matrix = btn.matrix
  44.         matrix = apply(matrix, val)
  45.     except:
  46.         pass
  47.     try:
  48.         inflate = btn.inflate
  49.         inflate = apply(inflate, val)
  50.     except:
  51.         pass
  52.     if mode==SS_MAP:
  53.         import mapbtns
  54.         mapbtns.moveselection(editor, btn.text, offset, matrix, inflate=inflate)
  55.     else:
  56.         import mdlbtns
  57.         mdlbtns.moveselection(editor, btn.text, offset, matrix, inflate=inflate)
  58.  
  59.  
  60.  
  61. class ConfigDialog(qmacro.dialogbox):
  62.     "The Movement Tool Palette configuration dialog box."
  63.  
  64.     #
  65.     # Dialog box shape
  66.     #
  67.  
  68.     dlgflags = FWF_NOESCCLOSE
  69.     begincolor = RED
  70.     endcolor = MAROON
  71.     size = (300,198)
  72.     dlgdef = """
  73.       {
  74.         Style = "9"
  75.         Caption = "Movement Tool Palette"
  76.         sep: = {Typ="S" Txt=" "}    // some space
  77.         mpOffset: = {
  78.           Txt="Move selection (x, y, z) :"
  79.           Typ="EF3"
  80.           Hint="x, y, z values to add to the coordinates in order to move the selection"
  81.         }
  82.         mpZoom: = {
  83.           Txt="Zoom factor :"
  84.           Typ="EF1"
  85.           Min='1'
  86.           Hint="scaling factor for enlarge and shrink"
  87.         }
  88.         WallWidth: = {
  89.           Txt="Inflate/Deflate by :"
  90.           Typ="EF1"
  91.           Hint="positive values inflate the polyhedrons, negative values deflate them"
  92.         }
  93.         mpRotate: = {
  94.           Txt="Rotation angle :"
  95.           Typ="EF1"
  96.           Hint="the angle that each rotation makes the objects turn"
  97.         }
  98.         sep: = {Typ="S" Txt=" "}    // some space
  99.         sep: = {Typ="S" Txt=""}    // a separator line
  100.         ok:py = {Txt="" }
  101.         cancel:py = {Txt="" }
  102.       }
  103.     """
  104.  
  105.     def __init__(self, menu):
  106.         try:
  107.             self.mode = menu.mode
  108.         except:
  109.             self.mode = menu
  110.         setup = quarkx.setupsubset(self.mode, "Building").copy()
  111.         qmacro.dialogbox.__init__(self, quarkx.clickform, setup,
  112.           ok = qtoolbar.button(self.close, "close this box", ico_editor, 3, "Close"),
  113.           cancel = qtoolbar.button(self.cancel, "cancel changes", ico_editor, 0, "Cancel"))
  114.  
  115.     def onclose(self, dlg):
  116.         if self.src is not None:
  117.             quarkx.globalaccept()
  118.             setup = quarkx.setupsubset(self.mode, "Building")
  119.             setup.copyalldata(self.src)
  120.         qmacro.dialogbox.onclose(self, dlg)
  121.  
  122.     def cancel(self, reserved):
  123.         self.src = None
  124.         self.close()
  125.  
  126.  
  127.  
  128. class ToolMoveBar(ToolBar):
  129.     "The Movement Tool Palette."
  130.  
  131.     Caption = "Movement Tool Palette"
  132.  
  133.     def buildbuttons(self, layout):
  134.         if not ico_dict.has_key('ico_movepal'):
  135.             ico_dict['ico_movepal']=LoadIconSet1("movepal", 1.0)
  136. #        icons = LoadPoolObj("ico_movepal", LoadIconSet1, "movepal", 1.0)
  137.         icons = ico_dict['ico_movepal']
  138.  
  139.         btn1 = qtoolbar.button(btnclick, "Move selection||Move selection:\n\nOffsets the selected objects by the distance specified in the toolbar settings (last button of this toolbar).", icons, 1, infobaselink="intro.mapeditor.toolpalettes.movement.html#move")
  140.         btn1.text = Strings[552]
  141.         btn1.spec = "mpOffset"
  142.         btn1.offset = quarkx.vect
  143.  
  144.         btn2 = qtoolbar.button(btnclick, "Enlarge||Enlarge:\n\nEnlarges the selected objects by a factor specified in the toolbar settings (last button of this toolbar).", icons, 2, infobaselink="intro.mapeditor.toolpalettes.movement.html#enlargeshrink")
  145.         btn2.text = Strings[548]
  146.         btn2.spec = "mpZoom"
  147.         btn2.matrix = matrix_zoom
  148.  
  149.         btn3 = qtoolbar.button(btnclick, "Shrink||Shrink:\n\nShrinks the selected objects by a factor specified in the toolbar settings (last button of this toolbar).", icons, 3, infobaselink="intro.mapeditor.toolpalettes.movement.html#enlargeshrink")
  150.         btn3.text = Strings[548]
  151.         btn3.spec = "mpZoom"
  152.         btn3.matrix = lambda f: matrix_zoom(1.0/f)
  153.  
  154.         btn4 = qtoolbar.button(btnclick, "X symmetry||X-symmetry:\n\n Mirror around the selection's common X-axis.\n\nThese buttons will mirror your selection, around its common center. To see the common center of your selected object(s), you must be able to see the 'Linear handle' of the selection.", icons, 5, infobaselink="intro.mapeditor.toolpalettes.movement.html#mirror")
  155.         btn4.text = Strings[551]
  156.         btn4.matrix = matrix_sym('x')
  157.  
  158.         btn5 = qtoolbar.button(btnclick, "Y symmetry||Y-symmetry:\n\n Mirror around the selection's common Y-axis.\n\nThese buttons will mirror your selection, around its common center. To see the common center of your selected object(s), you must be able to see the 'Linear handle' of the selection.", icons, 6, infobaselink="intro.mapeditor.toolpalettes.movement.html#mirror")
  159.         btn5.text = Strings[551]
  160.         btn5.matrix = matrix_sym('y')
  161.  
  162.         btn6 = qtoolbar.button(btnclick, "Z symmetry||Z-symmetry:\n\n Mirror around the selection's common Z-axis.\n\nThese buttons will mirror your selection, around its common center. To see the common center of your selected object(s), you must be able to see the 'Linear handle' of the selection.", icons, 4, infobaselink="intro.mapeditor.toolpalettes.movement.html#mirror")
  163.         btn6.text = Strings[551]
  164.         btn6.matrix = matrix_sym('z')
  165.  
  166.         btn7 = qtoolbar.button(btnclick, "X-axis rotation\nclockwise||X-axis rotation clockwise:\n\nRotates the selected objects clockwise around the X axis by an angle specified in the toolbar CFG settings (last button of this toolbar).\nTo display an X, Y or Z axis icon in their respective 2-D view window,\nClick on the Options menu and select the Axis XYZ letter item.", icons, 8, infobaselink="intro.mapeditor.toolpalettes.movement.html#rotate")
  167.         btn7.text = Strings[550]
  168.         btn7.spec = "mpRotate"
  169.         btn7.matrix = lambda f: matrix_rot_x(f * deg2rad)
  170.  
  171.         btn8 = qtoolbar.button(btnclick, "X-axis rotation\ncounterclockwise||X-axis rotation counterclockwise:\n\nRotates the selected objects counterclockwise around the X axis by an angle specified in the toolbar CFG settings (last button of this toolbar).\nTo display an X, Y or Z axis icon in their respective 2-D view window,\nClick on the Options menu and select the Axis XYZ letter item.", icons, 11, infobaselink="intro.mapeditor.toolpalettes.movement.html#rotate")
  172.         btn8.text = Strings[550]
  173.         btn8.spec = "mpRotate"
  174.         btn8.matrix = lambda f: matrix_rot_x(-f * deg2rad)
  175.  
  176.         btn9 = qtoolbar.button(btnclick, "Y-axis rotation\nclockwise||Y-axis rotation clockwise:\n\nRotates the selected objects clockwise around the Y axis by an angle specified in the toolbar CFG settings (last button of this toolbar).\nTo display an X, Y or Z axis icon in their respective 2-D view window,\nClick on the Options menu and select the Axis XYZ letter item.", icons, 9, infobaselink="intro.mapeditor.toolpalettes.movement.html#rotate")
  177.         btn9.text = Strings[550]
  178.         btn9.spec = "mpRotate"
  179.         btn9.matrix = lambda f: matrix_rot_y(-f * deg2rad)
  180.  
  181.         btn10 = qtoolbar.button(btnclick, "Y-axis rotation\ncounterclockwise||Y-axis rotation counterclockwise:\n\nRotates the selected objects counterclockwise around the Y axis by an angle specified in the toolbar CFG settings (last button of this toolbar).\nTo display an X, Y or Z axis icon in their respective 2-D view window,\nClick on the Options menu and select the Axis XYZ letter item.", icons, 12, infobaselink="intro.mapeditor.toolpalettes.movement.html#rotate")
  182.         btn10.text = Strings[550]
  183.         btn10.spec = "mpRotate"
  184.         btn10.matrix = lambda f: matrix_rot_y(f * deg2rad)
  185.  
  186.         btn11 = qtoolbar.button(btnclick, "Z-axis rotation\nclockwise||Z-axis rotation clockwise:\n\nRotates the selected objects clockwise around the Z axis by an angle specified in the toolbar CFG settings (last button of this toolbar).\nTo display an X, Y or Z axis icon in their respective 2-D view window,\nClick on the Options menu and select the Axis XYZ letter item.", icons, 10, infobaselink="intro.mapeditor.toolpalettes.movement.html#rotate")
  187.         btn11.text = Strings[550]
  188.         btn11.spec = "mpRotate"
  189.         btn11.matrix = lambda f: matrix_rot_z(-f * deg2rad)
  190.  
  191.         btn12 = qtoolbar.button(btnclick, "Z-axis rotation\ncounterclockwise||Z-axis rotation counterclockwise:\n\nRotates the selected objects counterclockwise around the Z axis by an angle specified in the toolbar CFG settings (last button of this toolbar).\nTo display an X, Y or Z axis icon in their respective 2-D view window,\nClick on the Options menu and select the Axis XYZ letter item.", icons, 7, infobaselink="intro.mapeditor.toolpalettes.movement.html#rotate")
  192.         btn12.text = Strings[550]
  193.         btn12.spec = "mpRotate"
  194.         btn12.matrix = lambda f: matrix_rot_z(f * deg2rad)
  195.  
  196.         btn13 = qtoolbar.button(btnclick, "Inflate/Deflate||Inflate/Deflate:\n\nInflate or deflate the selected polyhedrons by an amount specified in the toolbar settings (last button of this toolbar).\n\nInflating or deflating means moving the planes of the faces of the polyhedrons by a fixed amount of pixels. This is not the same as simply zooming, which preserves the aspect of the polyhedron.\n\nThis setting is also used for the Make Hollow function for two different atributes.\n\n1)  The number set will be the thickness of the walls created in units.\n\n2)  If the number is positive, the walls will be created outside the perimeter of the current solid polygon.\nIf the number is negative, the walls will be created inside the perimeter of the current solid polygon.", icons, 13, infobaselink="intro.mapeditor.toolpalettes.movement.html#inflatedeflate")
  197.         btn13.text = Strings[549]
  198.         btn13.spec = "WallWidth"
  199.         btn13.inflate = lambda f: f
  200.  
  201.         btncfg = qtoolbar.button(ConfigDialog, "Change this toolbar settings||Change this toolbar settings:\n\nThis opens the Movement toolbar configuration window.\n\nIf you hold your mouse cursor over each of the setting input areas, a description- help display will appear to give you information about what settings to use and how they work.\n\nClick the check mark to apply the new settings.\n\nClick the X to close the window without changing the current settings.", icons, 0, infobaselink="intro.mapeditor.toolpalettes.movement.html#configuration")
  202.         btncfg.icolist = icons
  203.         btncfg.mode = layout.MODE
  204.  
  205.         return [btn1, btn2, btn3, btn13, qtoolbar.sep, btn4, btn5, btn6,
  206.           btn7, btn8, btn9, btn10, btn11, btn12, qtoolbar.sep, btncfg]
  207.  
  208. # ----------- REVISION HISTORY ------------
  209. #
  210. #
  211. #$Log: qmovepal.py,v $
  212. #Revision 1.8  2003/03/15 20:41:07  cdunde
  213. #To update hints and add infobase links
  214. #
  215. #Revision 1.7  2003/02/14 04:23:11  cdunde
  216. #To add and update F1 popup info.
  217. #
  218. #Revision 1.6  2002/12/27 07:38:02  cdunde
  219. #Rearranged icons with added help info
  220. #
  221. #Revision 1.5  2001/10/22 10:28:20  tiglari
  222. #live pointer hunt, revise icon loading
  223. #
  224. #Revision 1.4  2001/06/17 21:05:27  tiglari
  225. #fix button captions
  226. #
  227. #Revision 1.3  2001/06/16 03:20:48  tiglari
  228. #add Txt="" to separators that need it
  229. #
  230. #Revision 1.2  2000/06/02 16:00:22  alexander
  231. #added cvs headers
  232. #
  233. #
  234. #